#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
# 转换 Makefile.inc 文件为 CMake 可识别的文件
# 此操作会解析 Makefile.inc 文件，并将其中的变量提取到 CMake 环境中
# 重点获取 'man_MANS' 变量，该变量包含需要生成手册页的文件列表
curl_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
# 包含转换后的 Makefile.inc.cmake 文件，以便在当前 CMake 脚本中使用其中定义的变量
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")

# 调用自定义函数 curl_add_manual_pages，为 man_MANS 列表中的文件添加生成手册页的自定义命令
# 该函数会将 Markdown 文件转换为 roff 格式的手册页文件
curl_add_manual_pages(man_MANS)
# 添加一个自定义目标 curl-opts-man
# 该目标依赖于 man_MANS 列表中的所有手册页文件，确保这些文件生成后才完成构建
add_custom_target(curl-opts-man DEPENDS ${man_MANS})
# 添加依赖关系，让 curl-man 目标依赖于 curl-opts-man 目标
# 这意味着在构建 curl-man 目标之前，会先确保 curl-opts-man 目标构建完成
add_dependencies(curl-man curl-opts-man)
# 检查是否禁用了安装操作
# 若 CURL_DISABLE_INSTALL 为 FALSE，则执行安装操作
if(NOT CURL_DISABLE_INSTALL)
  # 初始化一个空列表 _src，用于存储需要安装的手册页文件路径
  set(_src "")
  # 遍历 man_MANS 列表中的每个文件
  foreach(_f IN LISTS man_MANS)
    # 将生成的手册页文件的完整路径添加到 _src 列表中
    list(APPEND _src "${CMAKE_CURRENT_BINARY_DIR}/${_f}")
  endforeach()
  # 将 _src 列表中的所有手册页文件安装到指定的 man3 目录
  # 该目录由 CMAKE_INSTALL_MANDIR 变量指定
  install(FILES ${_src} DESTINATION "${CMAKE_INSTALL_MANDIR}/man3")
endif()
